#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <numeric>
using namespace std;

int main()
{
	int n = 0;
	cin >> n;
	vector<int> indegree(n + 1, 0);
	vector<int> head(n + 1, 0);
	vector<int> next(n * n, 0);
	vector<int> to(n * n, 0);

	int cnt = 1;
	for(int u = 1; u <= n; u++) {
                int v = 0;
		for (;;) {
			cin >> v;
			if (v == 0) {
				break;
			}

			indegree[v]++;
			next[cnt]=head[u];
			to[cnt] = v;
			head[u] = cnt++;
		}
	}

	queue<int> q;
	for (int i = 1; i <= n; i++) {
		if (indegree[i] == 0) {
			q.push(i);
		}
	}

	vector<int> ans;
	while (!q.empty()) {
		int u = q.front();
                q.pop();
                ans.push_back(u);
		for (int e = head[u]; e; e = next[e]) {
			int v = to[e];
			if (--indegree[v] == 0) {
				q.push(v);
			}
		}
	}

	for (auto u : ans) {
		cout << u << " ";
	}
	cout << endl;
	return 0;
}

// int main()
// {
// 	int n = 0;
// 	cin >> n;
// 	vector<int> indegree(n + 1, 0);
// 	vector<int> head(n + 1, 0);
// 	vector<int> next(1, 0);
// 	vector<int> to(n + 1, 0);

// 	int cnt = 1;
// 	for(int u = 1; u <= n; u++) {
//                 int v = 0;
// 		for (;;) {
// 			cin >> v;
// 			if (v == 0) {
// 				break;
// 			}

// 			indegree[v]++;
// 			next.push_back(head[u]);
// 			to[cnt] = v;
// 			head[u] = cnt++;
// 		}
// 	}

// 	queue<int> q;
// 	for (int i = 1; i <= n; i++) {
// 		if (indegree[i] == 0) {
// 			q.push(i);
// 		}
// 	}

// 	//vector<int> ans;
//         vector<int> ans;
//         for(int i = 0; i < n; i++){
//                 ans.push_back(i);
//         }
// 	while (!q.empty()) {
// 		int u = q.front();
//                 q.pop();
//                 cout<<u<<" ";
// 		for (int e = head[u]; e; e = next[e]) {
// 			int v = to[e];
// 			if (--indegree[v] == 0) {
// 				q.push(v);
// 			}
// 		}
// 	}

// 	for (auto u : ans) {
// 		cout << u << " ";
// 	}
// 	cout << endl;
// 	return 0;
// }

// int main()
// {
// 	int n = 0;
// 	cin >> n;
//         vector<vector<int>> gh(n + 1);
//         vector<int> indegree(n + 1, 0);

// 	int cnt = 1;
// 	for(int u = 1; u <= n; u++) {
//                 int v = 0;
// 		for (;;) {
// 			cin >> v;
// 			if (v == 0) {
// 				break;
// 			}
//                         gh[u].push_back(v);
//                         indegree[v]++;
// 		}
// 	}

//         queue<int> q;
//         for(int i = 1; i <= n; i++){
//                 if(indegree[i] == 0){
//                         q.push(i);
//                 }
//         }

//         vector<int> ans;
//         while(!q.empty()){
//                 int u = q.front();
//                 q.pop();
//                 ans.push_back(u);
//                 for(auto v : gh[u]){
//                         if(--indegree[v] == 0){
//                                 q.push(v);
//                         }
//                 }
//         }

//         for(auto u : ans){
//                 cout<<u<<" ";
//         }
//         cout<<endl;

//         return 0;
// }